home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Original Shareware 1.1
/
The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso
/
18
/
fpc103.zip
/
WORDS.SEQ
< prev
Wrap
Text File
|
1988-02-29
|
4KB
|
135 lines
\ WORDS.SEQ The WORDS definition Enhancements by Tom Zimmer
VARIABLE VYET \ DID WE PRINT VOCABULARY YET
VARIABLE VADDR \ VOCABULARY NAME ADDRESS
: .VYET ( --- ) VYET @ IF EXIT THEN
VADDR @ CR ." --[ " .ID ." ]--" VYET ON
CR LMARGIN @ SPACES ;
VARIABLE TOTALWORDS
: ?INNAME ( NFA --- F1 )
YSEG @ SWAP ?CS: HERE 100 + 31 CMOVEL
HERE COUNT HERE 100 + COUNT 31 AND
2DUP + 1- DUP C@ 127 AND SWAP C!
SEARCH SWAP DROP ;
: ?CODENAME ( NFA --- F1 )
NAME> C@ DUP 232 <> SWAP 233 <> AND ;
0 CONSTANT WORDTYPE
: ?WORDTYPE ( NFA --- F1 )
NAME> @REL>ABS WORDTYPE = ;
: ?TOTALWORDS ( NFA --- FALSE )
DROP FALSE
TOTALWORDS INCR ;
DEFER ?W.NAME
: W.NAME ( NFA --- ) \ Print name filtered by HERE
DUP ?W.NAME
IF .VYET 17 ?LINE .ID #OUT @ 64 < IF TAB THEN
TOTALWORDS INCR
ELSE DROP THEN ;
: .VOCWORDS ( A1 --- )
DUP HERE 500 + #THREADS 2* CMOVE
BODY> >NAME VADDR ! VYET OFF
BEGIN HERE 500 + #THREADS LARGEST DUP
?KEYPAUSE
WHILE DUP L>NAME W.NAME Y@ SWAP !
REPEAT 2DROP ;
DEFER ?W.TEST ' NOOP IS ?W.TEST
: ?*.* ( --- )
HERE 1+ " *.*" COMP 0=
IF ['] NOOP IS ?W.NAME
THEN ;
: ?CODE.* ( --- )
HERE 1+ " CODE.*" CAPS-COMP 0=
IF ['] ?CODENAME IS ?W.NAME
THEN ;
: ?:.* ( --- )
HERE 1+ " :.*" CAPS-COMP 0=
IF ['] ?*.* @REL>ABS =: WORDTYPE
['] ?WORDTYPE IS ?W.NAME
THEN ;
: ?VARIABLE.* ( --- )
HERE 1+ " VARIABLE.*" CAPS-COMP 0=
IF ['] TOTALWORDS @REL>ABS =: WORDTYPE
['] ?WORDTYPE IS ?W.NAME
THEN ;
: ?UVARIABLE.* ( --- )
HERE 1+ " UVARIABLE.*" CAPS-COMP 0=
IF ['] BASE @REL>ABS =: WORDTYPE
['] ?WORDTYPE IS ?W.NAME
THEN ;
: ?CONSTANT.* ( --- )
HERE 1+ " CONSTANT.*" CAPS-COMP 0=
IF ['] WORDTYPE @REL>ABS =: WORDTYPE
['] ?WORDTYPE IS ?W.NAME
THEN ;
: ?DEFER.* ( --- )
HERE 1+ " DEFER.*" CAPS-COMP 0=
IF ['] ?W.TEST @REL>ABS =: WORDTYPE
['] ?WORDTYPE IS ?W.NAME
THEN ;
: ?UDEFER.* ( --- )
HERE 1+ " UDEFER.*" CAPS-COMP 0=
IF ['] EMIT @REL>ABS =: WORDTYPE
['] ?WORDTYPE IS ?W.NAME
THEN ;
: ?TOTAL.* ( --- )
HERE 1+ " TOTAL.*" CAPS-COMP 0=
IF CR ." Not displaying, just counting the TOTAL "
['] ?TOTALWORDS IS ?W.NAME
THEN ;
\ WORDS <return> print words in current vocabulary.
\ WORDS <string> print words containing string in all vocabularies.
\ WORDS *.* print all words of all vocabularies.
\ WORDS enhancements by Tom Zimmer
: WORDS ( <t1> -- )
TOTALWORDS OFF
SAVESTATE
78 RMARGIN !
15 TABSIZE !
LMARGIN OFF
CR ." ** Press SPACE to pause, or ESC to exit ** "
>IN @ SPAN @ <>
IF ['] ?INNAME IS ?W.NAME
BL WORD DROP
?*.* ?CODE.* ?:.*
?VARIABLE.* ?CONSTANT.* ?DEFER.*
?UVARIABLE.* ?UDEFER.* ?TOTAL.*
VOC-LINK @
BEGIN DUP #THREADS 2* - .VOCWORDS
@ DUP 0=
UNTIL DROP
ELSE ['] NOOP IS ?W.NAME
CONTEXT @ .VOCWORDS
THEN CR TOTALWORDS @ U. ." Words displayed" CR
RESTORESTATE ;
ROOT DEFINITIONS
' WORDS ALIAS WORDS \ : WORDS WORDS ;
FORTH DEFINITIONS